#ifndef UDP_H_
	#define UDP_H_

	#define UDP_HEAD_SIZE       8		//!< Размер UDP заголовка в байтах

	//!	@brief				Метод формирования заголовка по заданному адресу
	/*!	@param	addr		Адрес начала пакета
	 * 	@param	length		Размер пакета
	 * 	@return	0
	 */
	alt_u8 udp_create_head(alt_u8* header, alt_u16 data_size);

	//!	@brief				Разбор UDP заголовка
	/*!	@param	header		Адрес начала заголовка
	 * 	@return	err			Код ошибки
	 */
	alt_u8 udp_header_parser(alt_u8* header);

	//!	@brief				Установить приемный порт
	/*!	@param	port		Номер порта
	 * 	@return	0
	 */
	alt_u8 udp_set_oport(alt_u16 port);


	//!	@brief				Установить порт назначения
	/*!	@param	port		Номер порта
	 * 	@return	0
	 */
	alt_u8 udp_set_dport(alt_u16 port);

	//!	@brief				Установить порт источника
	/*!	@param	port		Номер порта
	 * 	@return	0
	 */
	alt_u8 udp_set_sport(alt_u16 port);

	//!	@brief				Установить порт источника
	/*!	@param				Нет
	 * 	@return	port		Номер порта
	 */
	alt_u16 udp_get_rx_sport();

	//! Структура заголовка пакета UDP
	union	udp_header_u
	{
		struct //__attribute__((packed, aligned(1)))
		{
			alt_u16	sport;			//!< Порт отправителя
			alt_u16	dport;			//!< Порт получателя
			alt_u16	length;			//!< Длина пакета
			alt_u16	checksumm;		//!< Контрольная сумма пакета
		};
		alt_u8			data[UDP_HEAD_SIZE];
	};

/*
		//! Структура псевдозаголовка пакета UDP, для расчета контрольной суммы
		union	udp_pseudoheader_u
		{
			struct __attribute__((packed, aligned(1)))
			{
				alt_u16	s_ipv4;			//!< IP отправителя
				alt_u16	d_ipv4;			//!< IP получателя
				alt_u8	res1;			//!< резерв
				alt_u8	protocol;		//!< Протокол
				alt_u16	length_udp;		//!< Длина UDP пакета
				alt_u16	s_port;			//!< Порт отправителя
				alt_u16	d_port;			//!< Порт получателв
				alt_u16	length;			//!< Длина пакета
				alt_u16	res2;			//!< резерв
			};
			alt_u8			data[20];
		};

		//! Тип псевдозаголовка
		typedef udp_pseudoheader_u 	udp_pseudoheader_t;
*/
	//! Тип пакетов udp
	typedef union  udp_header_u 	udp_header_t;

#endif /* UDP_H_ */
